﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
namespace Fcom.VNInsurance.Web.CultureHelper
{
    public class SSOController : Controller
    {
        //
        // GET: /SSO/

        protected override void ExecuteCore()
        {
            
            string token = Request["token"];
            string haverequest = Request["Welcome"];//bien day a.
            //em xử lý như này:
            //khi mà 1 request tới trang vnbaohiem.com sẽ sử lý xem là có biến token trên trình duyệt ko?

            if (!string.IsNullOrEmpty(token))
            {

                //nếu có biến token có nghĩa là bên id.savemoney.vn đã có tài khoản đăng nhập. và trả về giá trị token đó.
                // em giải mã base64string;
                //em lưu dạng: Username|TimeSpan(hiện tại)
                string sso = DecodeFrom64(token);


                // có được username đang đăng nhập vào id.savemoney.vn
                FormsAuthentication.SetAuthCookie(sso, true);
                //set cookie user đăng nhập vnbaohiem là username
                Session["tokenme"] = sso;
                //1 session để lưu giá trị token.
               // Response.Redirect(Utils.Web.QueryString.Current.Remove("Welcome").Remove("token").Add("Welcome", "you").ToString());
                //ham nay redirect ve url hiện tại và ghép với ?Welcome=you để tránh redirect tiếp. 

            }
            else
            {
                FormsAuthentication.SignOut();
            }
          
            if (string.IsNullOrEmpty(haverequest))//kiem tra o day 
            {
                string returnurl = Request.Url.ToString();
                Response.Redirect("http://id.local/Home/CheckToken?UrlReturn=" + EncodeTo64(returnurl));
            }
            

        }
        private string EncodeTo64(string toEncode)
        {

            byte[] toEncodeAsBytes

                  = System.Text.Encoding.Unicode.GetBytes(toEncode);

            string returnValue

                  = System.Convert.ToBase64String(toEncodeAsBytes);

            return returnValue;

        }
        private string DecodeFrom64(string encodedData)
        {

            byte[] encodedDataAsBytes

                = System.Convert.FromBase64String(encodedData);

            string returnValue =

               System.Text.Encoding.Unicode.GetString(encodedDataAsBytes);

            return returnValue;

        }
        public ActionResult checkLogin()
        {
            return View();
        }

    }
}
